package com.sheng.leetcode.year2022.swordfingeroffer.day13;

import org.junit.Test;

import java.util.Arrays;

/**
 * @author liusheng
 * @date 2022/09/13
 *<p>
 * 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面<p>
 *<p>
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数在数组的前半部分，所有偶数在数组的后半部分。<p>
 *<p>
 * 示例：<p>
 *<p>
 * 输入：nums =[1,2,3,4]<p>
 * 输出：[1,3,2,4] <p>
 * 注：[3,1,2,4] 也是正确的答案之一。<p>
 *<p>
 * 提示：<p>
 *<p>
 * 0 <= nums.length <= 50000<p>
 * 0 <= nums[i] <= 10000<p>
 *<p>
 * 来源：力扣（LeetCode）<p>
 * 链接：<a href="https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof">...</a><p>
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。<p>
 */
public class Sword0021 {

    @Test
    public void test01() {
//        int[] nums = {1,2,3,4};
        int[] nums = {1,3,5};
        System.out.println(Arrays.toString(new Solution().exchange(nums)));
    }
}
class Solution {
    public int[] exchange(int[] nums) {
        int length = nums.length;
        // 奇数的坐标
        int odd = 0;
        // 偶数的坐标
        int even = length - 1;
        while (odd < even) {
            while (odd < length - 1 && nums[odd] % 2 == 1) {
                odd++;
            }
            while (even > 0 && nums[even] % 2 == 0) {
                even--;
            }
            if (odd < even) {
                int t = nums[odd];
                nums[odd] = nums[even];
                nums[even] = t;
            }
        }
        return nums;
    }
}

//class Solution {
//    public int[] exchange(int[] nums) {
//        int n = nums.length, index = 0;
//        int[] res = new int[n];
//        for (int num : nums) {
//            if (num % 2 == 1) {
//                res[index++] = num;
//            }
//        }
//        for (int num : nums) {
//            if (num % 2 == 0) {
//                res[index++] = num;
//            }
//        }
//        return res;
//    }
//}
//
//作者：LeetCode-Solution
//链接：https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/solution/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-en35/
//来源：力扣（LeetCode）
//著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
